/** 
 * JPanel mit dem man ein Verlag anlegen kann.
 * 
 * Datei: PanelVerlag.java        Autor: Simon Schindelmann 
 * Datum: 09.12.11                Version: 0.1
 * 
 */
package medienverwaltung.simulation;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import kommunikation.Email;
import kommunikation.Telefonnummer;
import kommunikation.UngueltigeEingabeAusnahme;
import kommunikation.Wohnsitzadresse;
import kommunikation.Parser.NichtImAlphabetAusnahme;
import medienverwaltung.Verlag;
import medienverwaltung.Verlagsverwalter;

public class PanelVerlag extends JPanel
{
  private static final long serialVersionUID = -8728855040291329L;
  //Speichert die aktuelle Sprache die verwendet wird.
  private Uebersetzung uebersetzung = Uebersetzung.gibSprache ();
  private JButton hinzufuegen;
  private JLabel name, strasse, hausnummer, ort, plz, telefon, email;
  private JTextField txt_name, txt_strasse, txt_hausnummer, txt_ort, 
  	txt_plz, txt_telefon, txt_email, txt_status;


  /**
   * Das Layout wird gesetzt und die Labels, Textfelder und Buttons 
   * werden initialisiert und dem JPanel hinzugefuegt.
   */
  public PanelVerlag ()
  {
    init ();
    setLayout (new GridLayout (4, 4));
    add (name);
    add (txt_name);
    add (strasse);
    add (txt_strasse);
    add (hausnummer);
    add (txt_hausnummer);
    add (plz);
    add (txt_plz);
    add (ort);
    add (txt_ort);
    add (telefon);
    add (txt_telefon);
    add (email);
    add (txt_email);
    add (hinzufuegen);
    add (txt_status);
  }


  /**
   * Hier werden die Labels, Textfelder, Buttons und ActionListener 
   * initialisiert.
   */
  public void init ()
  {
    name = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Name") + ": ");
    strasse = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Strasse") + ": ");
    hausnummer = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Hausnummer") + ": ");
    plz = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Postleitzahl") + ": ");
    ort = new JLabel ("  " + uebersetzung.lokal.gibUebersetzung ("Ort")
        + ": ");
    email = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("E-mail") + ": ");
    telefon = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Telefonnummer") + ": ");

    txt_name = new JTextField ();
    txt_strasse = new JTextField ();
    txt_hausnummer = new JTextField ();
    txt_plz = new JTextField ();
    txt_ort = new JTextField ();
    txt_email = new JTextField ();
    txt_telefon = new JTextField ();
    txt_status = new JTextField ();
    txt_status.setEditable (false);

    hinzufuegen = new JButton (uebersetzung.lokal
        .gibUebersetzung ("Verlag Hinzufuegen"));

    hinzufuegen.addActionListener (new ActionListener ()
    {
      public void actionPerformed (ActionEvent e)
      {
        try
        {
          hinzufuegen ();
        }
        catch (UngueltigeEingabeAusnahme e1)
        {
          JOptionPane.showMessageDialog (null, "" + e1.getMessage (),
              null, JOptionPane.WARNING_MESSAGE);
          txt_status.setBackground (Color.red);
        }
        catch (NichtImAlphabetAusnahme e2)
        {
          JOptionPane.showMessageDialog (null, "" + e2.getMessage (),
              null, JOptionPane.WARNING_MESSAGE);
          txt_status.setBackground (Color.red);
        }
      }
    });
  }


  /**
   * Hier werden die Textfelder ausgelesen und der Verlag angelegt.
   * Wenn mindestens die Pflichtfelder richtig ausgefuehlt wurden.
   * Tritt ein Fehler auf wird die Farbe des Status Feld auf Rot 
   * gesetzt andernfalls auf Gruen und die TextFelder werden geleert.
   */
  public void hinzufuegen ()
  {
    Verlagsverwalter vw = new Verlagsverwalter ();
    Verlag v;
    Wohnsitzadresse wsa;
    Telefonnummer t;
    Email e;
    
    if (txt_name.getText ().isEmpty () == true)
    {
      txt_status.setBackground (Color.red);
    }
    else
    {
      v = new Verlag (txt_name.getText ());

      if (txt_strasse.getText ().isEmpty () == false
          && txt_hausnummer.getText ().isEmpty () == false
          && txt_plz.getText ().isEmpty () == false
          && txt_ort.getText ().isEmpty () == false)
      {
        wsa = new Wohnsitzadresse (txt_ort.getText (), txt_plz
            .getText (), txt_hausnummer.getText (), txt_strasse
            .getText ());
        v.adresseHinzufuegen (wsa);
      }

      if (txt_telefon.getText ().isEmpty () == false)
      {
        t = new Telefonnummer (txt_telefon.getText ());
        v.telefonHinzufuegen (t);
      }

      if (txt_email.getText ().isEmpty () == false)
      {
        e = new Email (txt_email.getText ());
        v.emailHinzufuegen (e);
      }

      vw.verlagHinzufuegen (v);
      txt_status.setBackground (Color.GREEN);
      clear ();
    }
  }
  
  
  /**
   * Wenn das Anlegen eines Verlags erfolgreich war, wird der Inhalt
   * der Textfelder entfernt.
   */
  public void clear ()
  {
    txt_name.setText ("");
    txt_strasse.setText ("");
    txt_hausnummer.setText ("");
    txt_plz.setText ("");
    txt_ort.setText ("");
    txt_email.setText ("");
    txt_telefon.setText ("");
  }
}
